package br.edu.delta.service;

import java.util.Collection;

import javax.inject.Inject;

import br.edu.delta.bo.EnderecoBO;
import br.edu.delta.bo.LeitorBO;
import br.edu.delta.exception.NegocioException;
import br.edu.delta.model.Leitor;

/**
 * <p>
 * <b>Title:</b> LeitorService
 * </p>
 * 
 * <p>
 * <b>Description:</b> LeitorService
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
public class LeitorService extends AppService<Leitor, LeitorBO> {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = 1L;

	/** Atributo bo. */
	@Inject
	private LeitorBO bo;

	@Inject
	private EnderecoBO enderecoBO;
	
	@Override
	public void salvar(Leitor entidade) throws NegocioException {
	
		entidade.getEndereco().setId((Long) this.getEnderecoBO().inserir(entidade.getEndereco()));
		
		super.salvar(entidade);
	}

	/**
	 * @see br.com.javagyn.service.base.Service#getBo()
	 */
	@Override
	public LeitorBO getBo() {

		return this.bo;
	}

	/**
	 * Retorna o valor do atributo <code>enderecoBO</code>
	 * 
	 * @return <code>EnderecoBO</code>
	 */
	public EnderecoBO getEnderecoBO() {

		return enderecoBO;
	}

	/**
	 * Método responsável por pesquisar leitor por nome
	 *
	 * @author Denis
	 *
	 * @param nome
	 * @return
	 */
	public Collection<String> pesquisarLeitoresPorNome(String nome) {

		return this.getBo().pesquisarLeitoresPorNome(nome);
	}

	public Leitor pesquisarLeitorPorNome(String nome) {

		return this.getBo().pesquisarLeitorPorNome(nome);
	}

}
